<?php

class Application_Model_Ofertas extends Sgit_Model
{  
    protected $_name = 'ofertas';
    protected $_primary = 'id';
    protected $_cache_activa = TRUE;



    public function getOferta($id)
    {
      
        return $this->getOfertas(array(), $id);
    }


    public function getOfertas($values = array(), $id = null)
    {



        $select = $this->getAdapter()->select();

        $sql_numTareas="(SELECT count(*) from gestion_oferta where id_oferta=ofertas.id) as numTareas";
        $sql_level="(SELECT round(abs(AVG(DATEDIFF(fecha,CURDATE()))/COUNT(*)),2) FROM gestion_oferta where id_oferta=ofertas.id) as level";
        $sql_sinrespuesta="(SELECT count(*) from gestion_oferta where necesita_respuesta=1 AND tiempo_respuesta IS NULL AND id_oferta=ofertas.id) as sinrespuesta";
        $sql_lasttarea="(SELECT fecha from gestion_oferta where id_oferta=ofertas.id order by fecha desc limit 1 ) as last_post";
        $sql_tiempo="(SELECT sum(tiempo_empleado) from gestion_oferta where id_oferta=ofertas.id) as tiempo_empleado";
        $sql_tiempo_respuesta="(SELECT avg(tiempo_respuesta) from gestion_oferta where necesita_respuesta=1 AND id_oferta=ofertas.id) as tiempo_respuesta";
        
        $select->from(array($this->_name),array('*',$sql_level,$sql_numTareas,$sql_sinrespuesta,$sql_lasttarea,$sql_tiempo_respuesta,$sql_tiempo));
        $select->joinLeft('zonas', 'zonas.id = ofertas.id_zona', array('zona' => 'nombre','codigo_zona'=>'ini'));
        $select->joinLeft('usuarios', 'usuarios.id = ofertas.id_usuario', array('responsable' => 'nombre'));

        if (!is_null($id))
        {
            $select->where("ofertas.id= ?", $id);

        } else
        {

            //filter1
            if ($values['id_usuario'])
                $select->where('ofertas.id_usuario= ?', $values['id_usuario']);
            //filter2
            if ($values['id_zona'])
                $select->where('ofertas.id_zona= ?', $values['id_zona']);
            //filter4
            if ($values['estado'])
                $select->where('ofertas.estado= ?', $values['estado']);
            //filter5
            if ($values['id_area_oferta'])
                $select->where('ofertas.id_area_oferta= ?', $values['id_area_oferta']);

          
        }


        $rows = $this->getAdapter()->fetchAll($select);


        if (is_null($id))
            return $rows;
        else
            return $rows[0];


    }
    
} 




